/*
 * Copyright (C) 2012 POAS.VSTU
 */

package model;

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

/** 
 * Неспециализированная стопка карт
 */
public class CardPile implements Iterable<Card> {

    /** Контейнер с картами */
    protected ArrayList<Card> mCards = new ArrayList<>();

    /**  Размер стопки карт */
    public int size() {
        return mCards.size();
    }

    /**
     * Достает верхнюю карту из стопки
     * @return карта из стопки
     */
    public Card pop() { 
        //если в стопке нет карт, то и доставать нечего
        if(size() == 0){
            return null;
        }
        
        int lastIndex = size()-1;
        Card card = mCards.get(lastIndex);
        mCards.remove(lastIndex);
        return card;
    }

    /**
     * Достает все карты из стопки
     * @return карты из стопки
     */
    public List<Card> popAll() {

        ArrayList<Card> other =  (ArrayList<Card>) mCards.clone();
        return other;
    }
    
    /**
     * Помещает карту в стопку
     * @param card карта, помещаемая в стопку
     */
    public void push(Card card) {
             mCards.add(card);
    }

    /**
     * Помещает в стопку некоторое количество карт
     * @param cards карты, помещаемые в стопку
     */
    public void push(List<Card> cards) {
    }

    /** Очищает стопку */
    public void clear() {
        mCards.clear();
    }

    /** Итератор на стопку карт. */
    public Iterator<Card> iterator() {
        return mCards.iterator();
    }
}